
// express  => node中的第三方模块 => 可以通过此模块快速搭建服务器

// 第三方模块如何使用
// 1. 先下载
// cnpm install express  --save

// 2. 在引入使用
// var express = require("express");


var express = require("express");
// console.log(express);
var path = require("path");

var app = express();  //创建一个服务 




// 配置站点
// app.use(express.static(path.join(__dirname, "../site")));

// app.use()  中间件
// 1. 每次客户端发送请求到服务端 会依次经过每一个中间件(前提响应没有结束)
// 2. 对指定路由进行拦截 -> 执行对应的中间件函数


// 常见应用: 
// 执行任何代码。
// 对请求和响应对象进行更改。
// 结束请求-响应循环。0
// 调用堆栈中的下一个中间件。

// 第一种应用 -> 对所有请求进行拦截
app.use(function (req, res, next) {
    console.log("中间件1");
    next();   // 请求继续向后传递  => 调用堆栈中的下一个中间件。
})

app.use(function (req, res, next) {
    console.log("中间件2");
    next();   // 请求继续向后传递
})

// 第二种应用 -> 对指定路由进行拦截  
// 1. 所有的路由 都会被app.use("/")  根路由拦截  
// 2. 访问子级路由时,也会触发父级路由的拦截

// 根路由   /
// 一级路由  /login
// 二级路由  /login/type

app.use("/", function (req, res, next) {
    console.log("/", 1);
    res.writeHead(200, {
        "content-type": "text/plain;charset=utf-8"
    })
    // res.write("hello");
    next();
})

app.use("/", function (req, res, next) {
    console.log("/", 2);
    // res.write("world");
    // res.end("/根路由");
    next();
})

app.use("/lo", function (req, res, next) {
    console.log("/lo");
    // next();
    res.end("/lo")
})

app.use("/login", function (req, res, next) {
    console.log("/login");
    // res.end("/login");
    next();
})

app.use("/login/type", function (req, res) {
    console.log("/login/type");
    res.end("/login/type");
})
app.use("/login/a", function (req, res) {
    console.log("/login/type");
    res.end("/login/type");
})
app.use("/login/b", function (req, res) {
    console.log("/login/type");
    res.end("/login/type");
})
app.use("/login/c", function (req, res) {
    console.log("/login/type");
    res.end("/login/type");
})





app.listen(5000, function () {
    console.log("server is started at localhost:5000");
})




